"""
编码
作为爬虫工程师为什么为什么要知道常见的加密方式
模拟，伪装。js加密，逆向拆解
所以你看到了一个加密的数值，需要大概猜出它可能是什么方式机密出现的，
这样子就可以找到js代码，或者用python实现这个js加密
"""
import base64
from urllib.parse import quote, unquote

"""
base64 是一种基于 64 个可打印 ASCII 字符对任意字节数据进行编码的算法， 其在编码后具有一定意义的加密作用。
浏览器中提供了原生的 base64 编码、 解码方法， 方法名就是 btoa 和 atob
特征：
·字母大小写、数字和+、/以及后缀等号
·base64编码后的字符串一定能被4整除
·等号一定用作后缀，并且数目一定是0~2个

在js代码中找base64
"""
# text = 'xunter'
# # 编码
# # text先转字节数据text.encode()
# # 再交给base64编码base64.b64encode(text.encode())属字节数据方便数据传输
# # 再将字节数据转换成字符数据 base64.b64encode(text.encode()).decode()
# encoded = base64.b64encode(text.encode()).decode()
# print(encoded)
#
# # 解码
# # 先将编码后的字符数据转换成字节数据encoded.encode()
# # 再交给base64解码base64.b64decode(encoded.encode())
# # 最后将解码后的字节数据转换成字符数据base64.b64decode(encoded.encode()).decode()
# decode = base64.b64decode(encoded.encode()).decode()

"""
Unicode
计算机字符集编码，被称为统一码、万国码
特征：中文编码后以 \ u或&# 开头
js中也可能是%u

在js代码中找escape
"""
# text = 'xunter勋特'
# encode = text.encode('unicode_escape')  #编码
# decode = encode.decode('unicode_escape')#解码
# print(encode,decode)


"""
urlencode

URL编码，也被称为百分号编码，用于把URL中的符号进行转换
特征：中文编码后以百分号开头  百分号后接两个字符

js代码中找 encodeURI、decodeURI、encodeURIComponent、decodeURIComponent
"""
text = '有点东西'
encode = quote(text)
print(encode)
decode = unquote(encode)
print(decode)